package fr.miage.course7.app.model;

/**
 * Modelise une position.
 * @author Gloria ARAOZ
 * @author Leticia HUETE
 * @author Mickael LAROCHE
 */
public class Position {

    /**
     * Latitude en degres.
     */
    private int latitude;
    /**
     * Longitude en degres.
     */
    private int longitude;

    /**
     * Constructeur.
     * @param lat indique la latitude souhaitee (comprise entre -90 et 90)
     * @param lon indique la longitude souhaitee (comprise entre -180 et 180)
     */
    public Position(final int lat, final int lon) {
        if (lat < -90 || lat > 90 || lon < -180 || lon > 180) {
            System.err.println("Coordonnees incorrectes (" + lat + ", "
                                                           + lon + ")");
            System.exit(1);
        } else {
            latitude = lat;
            longitude = lon;
        }
    }

    /**
     * Retourne la latitude.
     * @return l'entier representant la latitude
     */
    public final int getLat() {
        return latitude;
    }

    /**
     * Retourne la longitude.
     * @return l'entier representant la longitude
     */
    public final int getLon() {
        return longitude;
    }

    /**
     * Compare la position courante avec une autre position.
     * @param c2 la position a comparer avec la position courante
     * @return vrai si les positions ont les memes coordonnees, faux sinon
     */
    public final boolean equals(final Position c2) {
        return (latitude == c2.getLat() && longitude == c2.getLon());
    }

    /**
     * Afficheur.
     * @return la classe sous forme de String
     */
    @Override
    public final String toString() {
        return getClass().getSimpleName() + '@'
               + Integer.toHexString(hashCode())
               + " [latitude=" + latitude + ", longitude=" + longitude + "]";
    }

}
